package com.tron.game;

import io.reactivex.Flowable;
import io.reactivex.functions.Function;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.Callable;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.FunctionEncoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Bool;
import org.web3j.abi.datatypes.DynamicArray;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.abi.datatypes.generated.Uint8;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.RemoteFunctionCall;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.BaseEventResponse;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tuples.generated.Tuple14;
import org.web3j.tuples.generated.Tuple3;
import org.web3j.tuples.generated.Tuple4;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import org.web3j.tx.gas.ContractGasProvider;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 4.5.5.
 */
@SuppressWarnings("rawtypes")
public class Lira extends Contract {
    private static final String BINARY = "0x608060405260126007556012600855600a600955600a8055602d600c556005600d55620f42406023553480156200003557600080fd5b506040516200684738038062006847833981810160405260a08110156200005b57600080fd5b8101908080519060200190929190805160405193929190846401000000008211156200008657600080fd5b838201915060208201858111156200009d57600080fd5b8251866001820283011164010000000082111715620000bb57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000f1578082015181840152602081019050620000d4565b50505050905090810190601f1680156200011f5780820380516001836020036101000a031916815260200191505b506040526020018051906020019092919080519060200190929190805190602001909291905050506040518060400160405280600481526020017f4c495241000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c495241000000000000000000000000000000000000000000000000000000008152506007548260049080519060200190620001ce92919062000868565b508160059080519060200190620001e792919062000868565b5080600660006101000a81548160ff021916908360ff16021790555050505033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000429050600081905060006200026d8684620004ce60201b620036c01790919060201c565b90506000620002916064600754600a0a6200055760201b62003be11790919060201c565b860290506000620002b6600854600a0a87620005e860201b62003c701790919060201c565b90506000604690506040518061020001604052808c81526020018b81526020018781526020018a8152602001868152602001858152602001848152602001848152602001838152602001838152602001600060018111156200031457fe5b8152602001600081526020016000815260200160008152602001600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815250600e6000820151816000015560208201518160010190805190602001906200039a929190620008ef565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548160ff021916908360018111156200041357fe5b021790555061016082015181600b015561018082015181600c01556101a082015181600d01556101c082015181600e0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101e082015181600f0155905050620004bd33620004a46200068760201b60201c565b60ff16600a0a6402540be400026200069e60201b60201c565b50505050505050505050506200099e565b6000808284019050838110156200054d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808211620005cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481620005db57fe5b0490508091505092915050565b600080831415620005fd576000905062000681565b600082141562000611576000905062000681565b60008284029050828482816200062357fe5b04146200067c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620068266021913960400191505060405180910390fd5b809150505b92915050565b6000600660009054906101000a900460ff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6200075e81600254620004ce60201b620036c01790919060201c565b600281905550620007bc816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620004ce60201b620036c01790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620008ab57805160ff1916838001178555620008dc565b82800160010185558215620008dc579182015b82811115620008db578251825591602001919060010190620008be565b5b509050620008eb919062000976565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200093257805160ff191683800117855562000963565b8280016001018555821562000963579182015b828111156200096257825182559160200191906001019062000945565b5b50905062000972919062000976565b5090565b6200099b91905b80821115620009975760008160009055506001016200097d565b5090565b90565b615e7880620009ae6000396000f3fe6080604052600436106101b75760003560e01c80637beeee09116100ec578063b41b779b1161008a578063c634d03211610064578063c634d03214610b25578063dd62ed3e14610b78578063e724529c14610bfd578063f0141d8414610c72576101b7565b8063b41b779b14610a72578063ba6026c314610ad8578063bbe4fd5014610afa576101b7565b80639717917d116100c65780639717917d14610892578063a155e20414610930578063a457c2d71461098c578063a9059cbb146109ff576101b7565b80637beeee091461077c578063893d20e8146107ab57806395d89b4114610802576101b7565b8063313ce5671161015957806341c0e1b51161013357806341c0e1b51461055a57806370a082311461058957806372e2f8f5146105ee578063747dff4214610657576101b7565b8063313ce56714610451578063332e64e71461048257806339509351146104e7576101b7565b80631986c811116101955780631986c811146102ea57806323b872dd1461031957806325527ece146103ac57806330a21812146103d7576101b7565b806306fdde03146101bc578063095ea7b31461024c57806318160ddd146102bf575b600080fd5b3480156101c857600080fd5b506101d1610c9d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102115780820151818401526020810190506101f6565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025857600080fd5b506102a56004803603604081101561026f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d3f565b604051808215151515815260200191505060405180910390f35b3480156102cb57600080fd5b506102d4610d56565b6040518082815260200191505060405180910390f35b3480156102f657600080fd5b506102ff610d60565b604051808215151515815260200191505060405180910390f35b34801561032557600080fd5b506103926004803603606081101561033c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114fe565b604051808215151515815260200191505060405180910390f35b3480156103b857600080fd5b506103c16115af565b6040518082815260200191505060405180910390f35b3480156103e357600080fd5b50610426600480360360208110156103fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177b565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561045d57600080fd5b50610466611900565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048e57600080fd5b506104d1600480360360208110156104a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611917565b6040518082815260200191505060405180910390f35b3480156104f357600080fd5b506105406004803603604081101561050a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611960565b604051808215151515815260200191505060405180910390f35b34801561056657600080fd5b5061056f611a05565b604051808215151515815260200191505060405180910390f35b34801561059557600080fd5b506105d8600480360360208110156105ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d60565b6040518082815260200191505060405180910390f35b3480156105fa57600080fd5b5061063d6004803603602081101561061157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611da8565b604051808215151515815260200191505060405180910390f35b34801561066357600080fd5b5061066c611dfe565b604051808f8152602001806020018e81526020018d81526020018c81526020018b81526020018a81526020018981526020018860018111156106aa57fe5b60ff1681526020018781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182810382528f818151815260200191508051906020019080838360005b83811015610734578082015181840152602081019050610719565b50505050905090810190601f1680156107615780820380516001836020036101000a031916815260200191505b509f5050505050505050505050505050505060405180910390f35b34801561078857600080fd5b50610791612077565b604051808215151515815260200191505060405180910390f35b3480156107b757600080fd5b506107c06123c6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080e57600080fd5b506108176123f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561085757808201518184015260208101905061083c565b50505050905090810190601f1680156108845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561089e57600080fd5b506108cb600480360360208110156108b557600080fd5b8101908080359060200190929190505050612492565b6040518084815260200183815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561091a5780820151818401526020810190506108ff565b5050505090500194505050505060405180910390f35b6109726004803603602081101561094657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612829565b604051808215151515815260200191505060405180910390f35b34801561099857600080fd5b506109e5600480360360408110156109af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612848565b604051808215151515815260200191505060405180910390f35b348015610a0b57600080fd5b50610a5860048036036040811015610a2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506128ed565b604051808215151515815260200191505060405180910390f35b610abe60048036036040811015610a8857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612904565b604051808215151515815260200191505060405180910390f35b610ae0612e52565b604051808215151515815260200191505060405180910390f35b348015610b0657600080fd5b50610b0f6131c6565b6040518082815260200191505060405180910390f35b348015610b3157600080fd5b50610b5e60048036036020811015610b4857600080fd5b81019080803590602001909291905050506131ce565b604051808215151515815260200191505060405180910390f35b348015610b8457600080fd5b50610be760048036036040811015610b9b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132ba565b6040518082815260200191505060405180910390f35b348015610c0957600080fd5b50610c5860048036036040811015610c2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613341565b604051808215151515815260200191505060405180910390f35b348015610c7e57600080fd5b50610c876134bf565b6040518082815260200191505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d355780601f10610d0a57610100808354040283529160200191610d35565b820191906000526020600020905b815481529060010190602001808311610d1857829003601f168201915b5050505050905090565b6000610d4c3384846134c9565b6001905092915050565b6000600254905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d966022913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d757374204f776e65722045786563757465000000000000000000000000000081525060200191505060405180910390fd5b6000429050610ed8615bce565b600e6040518061020001604052908160008201548152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f895780601f10610f5e57610100808354040283529160200191610f89565b820191906000526020600020905b815481529060010190602001808311610f6c57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff16600181111561100057fe5b600181111561100b57fe5b8152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600f820154815250509050818160a00151116114f457600073ffffffffffffffffffffffffffffffffffffffff16816101c0015173ffffffffffffffffffffffffffffffffffffffff1614611134576000816101600151111561113357806101c0015173ffffffffffffffffffffffffffffffffffffffff166108fc8261016001519081150290604051600060405180830381858888f19350505050158015611131573d6000803e3d6000fd5b505b5b60008090505b601e805490508110156112a4576000601e828154811061115657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050601f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549060ff02191690555050602060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055602160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905550808060010191505061113a565b50601e60006112b39190615c6c565b6000429050600081905060006112d68460600151846136c090919063ffffffff16565b905060008460c00151905060008561010001519050600060469050600061130b600189600001516136c090919063ffffffff16565b905060405180610200016040528082815260200189602001518152602001888152602001896060015181526020018781526020018681526020018581526020018581526020018481526020018481526020016000600181111561136a57fe5b8152602001600081526020016000815260200160008152602001600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815250600e6000820151816000015560208201518160010190805190602001906113ee929190615c8d565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548160ff0219169083600181111561146657fe5b021790555061016082015181600b015561018082015181600c01556101a082015181600d01556101c082015181600e0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101e082015181600f0155905050600199505050505050505050506114fb565b6000925050505b90565b600061150b848484613748565b6115a4843361159f85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b5890919063ffffffff16565b6134c9565b600190509392505050565b60006115b9615bce565b600e6040518061020001604052908160008201548152602001600182018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561166a5780601f1061163f5761010080835404028352916020019161166a565b820191906000526020600020905b81548152906001019060200180831161164d57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1660018111156116e157fe5b60018111156116ec57fe5b8152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600f8201548152505090508060e0015191505090565b600080600080611789615d0d565b601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160149054906101000a900460ff16151515158152505090508060200151945080600001519350602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150848484849450945094509450509193509193565b6000600660009054906101000a900460ff16905090565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006119fb33846119f685600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136c090919063ffffffff16565b6134c9565b6001905092915050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d966022913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611d5957611b0b615bce565b600e6040518061020001604052908160008201548152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bbc5780601f10611b9157610100808354040283529160200191611bbc565b820191906000526020600020905b815481529060010190602001808311611b9f57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff166001811115611c3357fe5b6001811115611c3e57fe5b8152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600f82015481525050905060008161016001511115611d5757600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261016001519081150290604051600060405180830381858888f19350505050158015611d3d573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff16ff5b505b6000905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006060600080600080600080600080600080600080611e1c615bce565b600e6040518061020001604052908160008201548152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ecd5780601f10611ea257610100808354040283529160200191611ecd565b820191906000526020600020905b815481529060010190602001808311611eb057829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff166001811115611f4457fe5b6001811115611f4f57fe5b8152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600f82015481525050905080600001519e5080602001519d5080604001519c5080606001519b5080608001519a508060a0015199508060e001519850806101200151975080610140015196508061016001519550806101a0015193508061018001519450806101c001519250806101e0015191508e8e8e8e8e8e8e8e8e8e8e8e8e8e9e509e509e509e509e509e509e509e509e509e509e509e509e509e5050909192939495969798999a9b9c9d565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461211f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d966022913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d757374204f776e65722045786563757465000000000000000000000000000081525060200191505060405180910390fd5b60004290506121ef615bce565b600e6040518061020001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122a05780601f10612275576101008083540402835291602001916122a0565b820191906000526020600020905b81548152906001019060200180831161228357829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff16600181111561231757fe5b600181111561232257fe5b8152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600f820154815250509050818160a00151116123bc576001925050506123c3565b6000925050505b90565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124885780601f1061245d57610100808354040283529160200191612488565b820191906000526020600020905b81548152906001019060200180831161246b57829003601f168201915b5050505050905090565b600080606061249f615bce565b600e6040518061020001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125505780601f1061252557610100808354040283529160200191612550565b820191906000526020600020905b81548152906001019060200180831161253357829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1660018111156125c757fe5b60018111156125d257fe5b8152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600f82015481525050905060018510156126cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600093508060e001519250846040519080825280602002602001820160405280156127075781602001602082028038833980820191505090505b5091506000816101a001519050600082610120015190506000836101e00151905060008090505b888110156128145761274987896136c090919063ffffffff16565b97508686828151811061275857fe5b6020026020010181815250506127786001856136c090919063ffffffff16565b9350818414156127af57612796600284613be190919063ffffffff16565b92506127ac600283613c7090919063ffffffff16565b91505b60006127dc60646127ce600854600a0a87613be190919063ffffffff16565b6136c090919063ffffffff16565b905061280460646127f6838b613c7090919063ffffffff16565b613be190919063ffffffff16565b975050808060010191505061272e565b50868686965096509650505050509193909250565b600080349050600033905061283f848383613d08565b92505050919050565b60006128e333846128de85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b5890919063ffffffff16565b6134c9565b6001905092915050565b60006128fa338484613748565b6001905092915050565b600061290f83614aa9565b612981576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018210156129f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612a00615bce565b600e6040518061020001604052908160008201548152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612ab15780601f10612a8657610100808354040283529160200191612ab1565b820191906000526020600020905b815481529060010190602001808311612a9457829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff166001811115612b2857fe5b6001811115612b3357fe5b8152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600f820154815250509050600081600001511415612c32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600034905060003390506000806060612c4a88612492565b80935081945082955050505082851015612ccc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303700000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b87815114612d42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600080905060008090505b89811015612d8a57612d7b838281518110612d6457fe5b6020026020010151836136c090919063ffffffff16565b91508080600101915050612d4d565b50838114612e00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008090505b89811015612e40576000838281518110612e1c57fe5b60200260200101519050612e318c8289613d08565b50508080600101915050612e06565b50600197505050505050505092915050565b60008034905060008111612ece576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303600000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60003390506000429050612ee0615bce565b600e6040518061020001604052908160008201548152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612f915780601f10612f6657610100808354040283529160200191612f91565b820191906000526020600020905b815481529060010190602001808311612f7457829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff16600181111561300857fe5b600181111561301357fe5b8152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600f8201548152505090506130af84600e600c01546136c090919063ffffffff16565b600e600c018190555060006130d36001836101a001516136c090919063ffffffff16565b905080600e600d018190555082600e600401819055506131008260600151846136c090919063ffffffff16565b600e60050181905550600061313b606461312d600854600a0a866101200151613be190919063ffffffff16565b6136c090919063ffffffff16565b905060008360e00151905061316c606461315e8484613c7090919063ffffffff16565b613be190919063ffffffff16565b600e6007018190555085600e800160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600197505050505050505090565b600042905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613276576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d966022913960400191505060405180910390fd5b6132b1600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166132a4611900565b60ff16600a0a8402614baf565b60019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146133e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d966022913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156134ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f63616e206e6f7420667265657a65206f776e657200000000000000000000000081525060200191505060405180910390fd5b6134b78383614d6a565b905092915050565b6000600754905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561354f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615e206024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615db86022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008082840190508381101561373e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f74686973206163636f756e74206861732066726f7a656e00000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561388e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615dfb6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613914576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615d736023913960400191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156139c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f73656e64657220616d6f756e74204e6f7420656e6f756768000000000000000081525060200191505060405180910390fd5b613a19816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b5890919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613aac816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136c090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600082821115613bd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b6000808211613c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481613c6357fe5b0490508091505092915050565b600080831415613c835760009050613d02565b6000821415613c955760009050613d02565b6000828402905082848281613ca657fe5b0414613cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615dda6021913960400191505060405180910390fd5b809150505b92915050565b6000808290506000849050613d1c86614aa9565b613d8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b613d96615bce565b600e6040518061020001604052908160008201548152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613e475780601f10613e1c57610100808354040283529160200191613e47565b820191906000526020600020905b815481529060010190602001808311613e2a57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff166001811115613ebe57fe5b6001811115613ec957fe5b8152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600f820154815250509050600081600001511415613fc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008160e0015190506000826101a0015190506000811415613fe957600190505b613ff281614e3c565b90506000600181111561400157fe5b836101400151600181111561401257fe5b14614085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b428360a00151116140fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b83821115614174576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f313030303400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061419e6064614190600a5488613c7090919063ffffffff16565b613be190919063ffffffff16565b905060006141ca60646141bc60095489613c7090919063ffffffff16565b613be190919063ffffffff16565b905060006141f660646141e8600c548a613c7090919063ffffffff16565b613be190919063ffffffff16565b905060006142226064614214600d548b613c7090919063ffffffff16565b613be190919063ffffffff16565b905060006142328a8f878c6150ac565b905060008090505b601e805490508110156142d4576000601e828154811061425657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050602260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905550808060010191505061423a565b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015614353573d6000803e3d6000fd5b5060008a9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156143d557600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b8073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561441b573d6000803e3d6000fd5b506000614431878c613b5890919063ffffffff16565b90506144468682613b5890919063ffffffff16565b905061445b8482613b5890919063ffffffff16565b9050600080905060008090505b601e805490508110156145ea576000601e828154811061448457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000809050614503836155b3565b156145da5761452d8d61451f848d613c7090919063ffffffff16565b613be190919063ffffffff16565b905061454281866136c090919063ffffffff16565b945061459681602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136c090919063ffffffff16565b602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050508080600101915050614468565b506145fe8183613b5890919063ffffffff16565b915060008090505b601e805490508110156148f9576000601e828154811061462257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156148ea576146a4615d0d565b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160149054906101000a900460ff16151515158152505090508060600151156147a4576147968282600001516136c090919063ffffffff16565b8160000181815250506147e3565b604051806080016040528083815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525090505b80601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156148e7573d6000803e3d6000fd5b50505b50508080600101915050614606565b5060008090505b601e8054905081101561499a576000601e828154811061491c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050602260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055508080600101915050614900565b506149a68d83836157b8565b507fb6668bab6642a507a81c08f30893aaa47e0c29df8e88ad6b9c19ffd3a2296cf38d8d42604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200180602001828103825260038152602001807f427579000000000000000000000000000000000000000000000000000000000081525060200194505050505060405180910390a1614a91600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168e614a82611900565b60ff16600a0a60235402613748565b60019d50505050505050505050505050509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614ae85760009050614baa565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614b475760019050614baa565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160149054906101000a900460ff1615614ba55760019050614baa565b600090505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614c52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b614c67816002546136c090919063ffffffff16565b600281905550614cbe816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136c090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a16001905092915050565b60008190506000614e5c600754600a0a6003613c7090919063ffffffff16565b905060008090505b601e805490508110156150a2576000601e8281548110614e8057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614f095750615095565b614f11615d0d565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160149054906101000a900460ff16151515158152505090506000602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050816060015180156150375750600081115b15615091576000615070600754600a0a61506285602001518660000151613be190919063ffffffff16565b613c7090919063ffffffff16565b905085811061508f5761508c8289613b5890919063ffffffff16565b96505b505b5050505b8080600101915050614e64565b5081915050919050565b60006150b6615d0d565b601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160149054906101000a900460ff1615151515815250509050600080905081606001511561519e57816040015190505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156151d7578590505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561523257600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b8073ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050158015615278573d6000803e3d6000fd5b506152cb85602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136c090919063ffffffff16565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081606001511561542657601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160149054906101000a900460ff161515151581525050915080826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506154cb565b604051806080016040528060008152602001600081526020018273ffffffffffffffffffffffffffffffffffffffff168152602001600115158152509150601e8790806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6154e28483602001516136c090919063ffffffff16565b82602001818152505081601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050949350505050565b600060019050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561561857600190506157b3565b6000615633600754600a0a6003613c7090919063ffffffff16565b905061563d615d0d565b601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160149054906101000a900460ff16151515158152505090506000602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050816060015180156157635750600081115b156157ac57600061579c600754600a0a61578e85602001518660000151613be190919063ffffffff16565b613c7090919063ffffffff16565b90508381106157aa57600094505b505b8393505050505b919050565b6000804290506157c6615bce565b600e6040518061020001604052908160008201548152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156158775780601f1061584c57610100808354040283529160200191615877565b820191906000526020600020905b81548152906001019060200180831161585a57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1660018111156158ee57fe5b60018111156158f957fe5b8152602001600b8201548152602001600c8201548152602001600d8201548152602001600e820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600f82015481525050905085600e800160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506159d8858261016001516136c090919063ffffffff16565b600e600b018190555060006159fc6001836101a001516136c090919063ffffffff16565b905080600e600d0181905550615a5b6001602060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136c090919063ffffffff16565b602060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600e60040181905550615abf8260600151846136c090919063ffffffff16565b600e60050181905550816101e00151811415615b3b576000615af06002846101200151613be190919063ffffffff16565b90508083610120018181525050615b166002846101e00151613c7090919063ffffffff16565b836101e001818152505080600e60090181905550826101e00151600e600f0181905550505b6000615b6d6064615b5f600854600a0a866101200151613be190919063ffffffff16565b6136c090919063ffffffff16565b9050615b996064615b8b838660e00151613c7090919063ffffffff16565b613be190919063ffffffff16565b600e60070181905550615bba86600e600c01546136c090919063ffffffff16565b600e600c0181905550505050509392505050565b6040518061020001604052806000815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001811115615c2d57fe5b8152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b5080546000825590600052602060002090810190615c8a9190615d4d565b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615cce57805160ff1916838001178555615cfc565b82800160010185558215615cfc579182015b82811115615cfb578251825591602001919060010190615ce0565b5b509050615d099190615d4d565b5090565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090565b615d6f91905b80821115615d6b576000816000905550600101615d53565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6e2e45524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a72315820fbfb7848b291c8c4b7de58e67371a6620a9dd483ff6c9ab1d1f3d4ad2254102964736f6c63430005110032536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77";

    public static final String FUNC_ALLOWANCE = "allowance";

    public static final String FUNC_APPROVE = "approve";

    public static final String FUNC_BALANCEOF = "balanceOf";

    public static final String FUNC_CHECKFREEZE = "checkFreeze";

    public static final String FUNC_DECIMALS = "decimals";

    public static final String FUNC_DECREASEALLOWANCE = "decreaseAllowance";

    public static final String FUNC_GETNOW = "getNow";

    public static final String FUNC_INCREASEALLOWANCE = "increaseAllowance";

    public static final String FUNC_NAME = "name";

    public static final String FUNC_SYMBOL = "symbol";

    public static final String FUNC_TOTALSUPPLY = "totalSupply";

    public static final String FUNC_TRANSFER = "transfer";

    public static final String FUNC_TRANSFERFROM = "transferFrom";

    public static final String FUNC_FILL_PRIZE = "fill_prize";

    public static final String FUNC_GETDECIMALS = "getDecimals";

    public static final String FUNC_GETOWNER = "getOwner";

    public static final String FUNC_GETCURRENTROUNDINFO = "getCurrentRoundInfo";

    public static final String FUNC_ASKPRICE = "askprice";

    public static final String FUNC_ASK_BULK_PRICE = "ask_bulk_price";

    public static final String FUNC_BULK_BUY_TOKEN = "bulk_buy_token";

    public static final String FUNC_BUY_TOKEN = "buy_token";

    public static final String FUNC_GETBUYERBUYCOUNT = "getBuyerBuyCount";

    public static final String FUNC_GETBUERINCOMEINVESTMENT = "getBuerIncomeInvestment";

    public static final String FUNC_CHECKGAMEANDPRIZE = "checkGameAndPrize";

    public static final String FUNC_PRIZEGAME = "PrizeGame";

    public static final String FUNC_KILL = "kill";

    public static final String FUNC_FREEZEACCOUNT = "freezeAccount";

    public static final String FUNC_MINTTOKEN = "mintToken";

    public static final Event APPROVAL_EVENT = new Event("Approval", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event BUYGAMEEVENT_EVENT = new Event("BuyGameEvent", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}));
    ;

    public static final Event FROZENFUNDS_EVENT = new Event("FrozenFunds", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Bool>() {}));
    ;

    public static final Event TRANSFER_EVENT = new Event("Transfer", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint256>() {}));
    ;

    protected static final HashMap<String, String> _addresses;

    static {
        _addresses = new HashMap<String, String>();
        _addresses.put("97", "0x7Ad3AD43cd1E104565eD5A59C886c9D8678Ba61F");
    }

    @Deprecated
    protected Lira(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected Lira(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, credentials, contractGasProvider);
    }

    @Deprecated
    protected Lira(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected Lira(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public List<ApprovalEventResponse> getApprovalEvents(TransactionReceipt transactionReceipt) {
        List<EventValuesWithLog> valueList = extractEventParametersWithLog(APPROVAL_EVENT, transactionReceipt);
        ArrayList<ApprovalEventResponse> responses = new ArrayList<ApprovalEventResponse>(valueList.size());
        for (EventValuesWithLog eventValues : valueList) {
            ApprovalEventResponse typedResponse = new ApprovalEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.spender = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.value = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Flowable<ApprovalEventResponse> approvalEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(new Function<Log, ApprovalEventResponse>() {
            @Override
            public ApprovalEventResponse apply(Log log) {
                EventValuesWithLog eventValues = extractEventParametersWithLog(APPROVAL_EVENT, log);
                ApprovalEventResponse typedResponse = new ApprovalEventResponse();
                typedResponse.log = log;
                typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse.spender = (String) eventValues.getIndexedValues().get(1).getValue();
                typedResponse.value = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                return typedResponse;
            }
        });
    }

    public Flowable<ApprovalEventResponse> approvalEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(APPROVAL_EVENT));
        return approvalEventFlowable(filter);
    }

    public List<BuyGameEventEventResponse> getBuyGameEventEvents(TransactionReceipt transactionReceipt) {
        List<EventValuesWithLog> valueList = extractEventParametersWithLog(BUYGAMEEVENT_EVENT, transactionReceipt);
        ArrayList<BuyGameEventEventResponse> responses = new ArrayList<BuyGameEventEventResponse>(valueList.size());
        for (EventValuesWithLog eventValues : valueList) {
            BuyGameEventEventResponse typedResponse = new BuyGameEventEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.bidder = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.buy_time = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.event_msg = (String) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Flowable<BuyGameEventEventResponse> buyGameEventEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(new Function<Log, BuyGameEventEventResponse>() {
            @Override
            public BuyGameEventEventResponse apply(Log log) {
                EventValuesWithLog eventValues = extractEventParametersWithLog(BUYGAMEEVENT_EVENT, log);
                BuyGameEventEventResponse typedResponse = new BuyGameEventEventResponse();
                typedResponse.log = log;
                typedResponse.bidder = (String) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                typedResponse.buy_time = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
                typedResponse.event_msg = (String) eventValues.getNonIndexedValues().get(3).getValue();
                return typedResponse;
            }
        });
    }

    public Flowable<BuyGameEventEventResponse> buyGameEventEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(BUYGAMEEVENT_EVENT));
        return buyGameEventEventFlowable(filter);
    }

    public List<FrozenFundsEventResponse> getFrozenFundsEvents(TransactionReceipt transactionReceipt) {
        List<EventValuesWithLog> valueList = extractEventParametersWithLog(FROZENFUNDS_EVENT, transactionReceipt);
        ArrayList<FrozenFundsEventResponse> responses = new ArrayList<FrozenFundsEventResponse>(valueList.size());
        for (EventValuesWithLog eventValues : valueList) {
            FrozenFundsEventResponse typedResponse = new FrozenFundsEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.target = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.frozen = (Boolean) eventValues.getNonIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Flowable<FrozenFundsEventResponse> frozenFundsEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(new Function<Log, FrozenFundsEventResponse>() {
            @Override
            public FrozenFundsEventResponse apply(Log log) {
                EventValuesWithLog eventValues = extractEventParametersWithLog(FROZENFUNDS_EVENT, log);
                FrozenFundsEventResponse typedResponse = new FrozenFundsEventResponse();
                typedResponse.log = log;
                typedResponse.target = (String) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.frozen = (Boolean) eventValues.getNonIndexedValues().get(1).getValue();
                return typedResponse;
            }
        });
    }

    public Flowable<FrozenFundsEventResponse> frozenFundsEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(FROZENFUNDS_EVENT));
        return frozenFundsEventFlowable(filter);
    }

    public List<TransferEventResponse> getTransferEvents(TransactionReceipt transactionReceipt) {
        List<EventValuesWithLog> valueList = extractEventParametersWithLog(TRANSFER_EVENT, transactionReceipt);
        ArrayList<TransferEventResponse> responses = new ArrayList<TransferEventResponse>(valueList.size());
        for (EventValuesWithLog eventValues : valueList) {
            TransferEventResponse typedResponse = new TransferEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.value = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Flowable<TransferEventResponse> transferEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(new Function<Log, TransferEventResponse>() {
            @Override
            public TransferEventResponse apply(Log log) {
                EventValuesWithLog eventValues = extractEventParametersWithLog(TRANSFER_EVENT, log);
                TransferEventResponse typedResponse = new TransferEventResponse();
                typedResponse.log = log;
                typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
                typedResponse.value = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                return typedResponse;
            }
        });
    }

    public Flowable<TransferEventResponse> transferEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(TRANSFER_EVENT));
        return transferEventFlowable(filter);
    }

    public RemoteFunctionCall<BigInteger> allowance(String owner, String spender) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_ALLOWANCE, 
                Arrays.<Type>asList(new Address(owner),
                new Address(spender)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<TransactionReceipt> approve(String spender, BigInteger value) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_APPROVE, 
                Arrays.<Type>asList(new Address(spender),
                new Uint256(value)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<BigInteger> balanceOf(String account) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_BALANCEOF, 
                Arrays.<Type>asList(new Address(account)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<Boolean> checkFreeze(String sender) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_CHECKFREEZE, 
                Arrays.<Type>asList(new Address(sender)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteFunctionCall<BigInteger> decimals() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_DECIMALS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint8>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<TransactionReceipt> decreaseAllowance(String spender, BigInteger subtractedValue) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_DECREASEALLOWANCE, 
                Arrays.<Type>asList(new Address(spender),
                new Uint256(subtractedValue)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<BigInteger> getNow() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_GETNOW, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<TransactionReceipt> increaseAllowance(String spender, BigInteger addedValue) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_INCREASEALLOWANCE, 
                Arrays.<Type>asList(new Address(spender),
                new Uint256(addedValue)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<String> name() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_NAME, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteFunctionCall<String> symbol() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_SYMBOL, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteFunctionCall<BigInteger> totalSupply() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_TOTALSUPPLY, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<TransactionReceipt> transfer(String recipient, BigInteger amount) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(new Address(recipient),
                new Uint256(amount)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> transferFrom(String sender, String recipient, BigInteger amount) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_TRANSFERFROM, 
                Arrays.<Type>asList(new Address(sender),
                new Address(recipient),
                new Uint256(amount)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> fill_prize(BigInteger weiValue) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_FILL_PRIZE, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function, weiValue);
    }

    public RemoteFunctionCall<BigInteger> getDecimals() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_GETDECIMALS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<String> getOwner() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_GETOWNER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteFunctionCall<Tuple14<BigInteger, String, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, String, BigInteger>> getCurrentRoundInfo() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_GETCURRENTROUNDINFO, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint8>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
        return new RemoteFunctionCall<Tuple14<BigInteger, String, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, String, BigInteger>>(function,
                new Callable<Tuple14<BigInteger, String, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, String, BigInteger>>() {
                    @Override
                    public Tuple14<BigInteger, String, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, String, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple14<BigInteger, String, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, String, BigInteger>(
                                (BigInteger) results.get(0).getValue(), 
                                (String) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue(), 
                                (BigInteger) results.get(3).getValue(), 
                                (BigInteger) results.get(4).getValue(), 
                                (BigInteger) results.get(5).getValue(), 
                                (BigInteger) results.get(6).getValue(), 
                                (BigInteger) results.get(7).getValue(), 
                                (BigInteger) results.get(8).getValue(), 
                                (BigInteger) results.get(9).getValue(), 
                                (BigInteger) results.get(10).getValue(), 
                                (BigInteger) results.get(11).getValue(), 
                                (String) results.get(12).getValue(), 
                                (BigInteger) results.get(13).getValue());
                    }
                });
    }

    public RemoteFunctionCall<BigInteger> askprice() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_ASKPRICE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<Tuple3<BigInteger, BigInteger, List<BigInteger>>> ask_bulk_price(BigInteger buy_count) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_ASK_BULK_PRICE, 
                Arrays.<Type>asList(new Uint256(buy_count)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<DynamicArray<Uint256>>() {}));
        return new RemoteFunctionCall<Tuple3<BigInteger, BigInteger, List<BigInteger>>>(function,
                new Callable<Tuple3<BigInteger, BigInteger, List<BigInteger>>>() {
                    @Override
                    public Tuple3<BigInteger, BigInteger, List<BigInteger>> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple3<BigInteger, BigInteger, List<BigInteger>>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                convertToNative((List<Uint256>) results.get(2).getValue()));
                    }
                });
    }

    public RemoteFunctionCall<TransactionReceipt> bulk_buy_token(String recommend_user, BigInteger buy_count, BigInteger weiValue) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_BULK_BUY_TOKEN, 
                Arrays.<Type>asList(new Address(recommend_user),
                new Uint256(buy_count)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function, weiValue);
    }

    public RemoteFunctionCall<TransactionReceipt> buy_token(String recommend_user, BigInteger weiValue) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_BUY_TOKEN, 
                Arrays.<Type>asList(new Address(recommend_user)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function, weiValue);
    }

    public RemoteFunctionCall<BigInteger> getBuyerBuyCount(String buyer) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_GETBUYERBUYCOUNT, 
                Arrays.<Type>asList(new Address(buyer)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<Tuple4<BigInteger, BigInteger, BigInteger, BigInteger>> getBuerIncomeInvestment(String buyer) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_GETBUERINCOMEINVESTMENT, 
                Arrays.<Type>asList(new Address(buyer)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return new RemoteFunctionCall<Tuple4<BigInteger, BigInteger, BigInteger, BigInteger>>(function,
                new Callable<Tuple4<BigInteger, BigInteger, BigInteger, BigInteger>>() {
                    @Override
                    public Tuple4<BigInteger, BigInteger, BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple4<BigInteger, BigInteger, BigInteger, BigInteger>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue(), 
                                (BigInteger) results.get(3).getValue());
                    }
                });
    }

    public RemoteFunctionCall<Boolean> checkGameAndPrize() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(FUNC_CHECKGAMEANDPRIZE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteFunctionCall<TransactionReceipt> PrizeGame() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_PRIZEGAME, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> kill() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_KILL, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> freezeAccount(String target, Boolean freeze) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_FREEZEACCOUNT, 
                Arrays.<Type>asList(new Address(target),
                new Bool(freeze)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> mintToken(BigInteger mintedAmount) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_MINTTOKEN, 
                Arrays.<Type>asList(new Uint256(mintedAmount)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    @Deprecated
    public static Lira load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new Lira(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    @Deprecated
    public static Lira load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new Lira(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static Lira load(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return new Lira(contractAddress, web3j, credentials, contractGasProvider);
    }

    public static Lira load(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return new Lira(contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static RemoteCall<Lira> deploy(Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider, BigInteger _game_id, String _name, BigInteger _game_times, BigInteger _price, BigInteger _price_upper_rate) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new Uint256(_game_id),
                new Utf8String(_name),
                new Uint256(_game_times),
                new Uint256(_price),
                new Uint256(_price_upper_rate)));
        return deployRemoteCall(Lira.class, web3j, credentials, contractGasProvider, BINARY, encodedConstructor);
    }

    public static RemoteCall<Lira> deploy(Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider, BigInteger _game_id, String _name, BigInteger _game_times, BigInteger _price, BigInteger _price_upper_rate) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new Uint256(_game_id),
                new Utf8String(_name),
                new Uint256(_game_times),
                new Uint256(_price),
                new Uint256(_price_upper_rate)));
        return deployRemoteCall(Lira.class, web3j, transactionManager, contractGasProvider, BINARY, encodedConstructor);
    }

    @Deprecated
    public static RemoteCall<Lira> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit, BigInteger _game_id, String _name, BigInteger _game_times, BigInteger _price, BigInteger _price_upper_rate) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new Uint256(_game_id),
                new Utf8String(_name),
                new Uint256(_game_times),
                new Uint256(_price),
                new Uint256(_price_upper_rate)));
        return deployRemoteCall(Lira.class, web3j, credentials, gasPrice, gasLimit, BINARY, encodedConstructor);
    }

    @Deprecated
    public static RemoteCall<Lira> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit, BigInteger _game_id, String _name, BigInteger _game_times, BigInteger _price, BigInteger _price_upper_rate) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new Uint256(_game_id),
                new Utf8String(_name),
                new Uint256(_game_times),
                new Uint256(_price),
                new Uint256(_price_upper_rate)));
        return deployRemoteCall(Lira.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, encodedConstructor);
    }

    protected String getStaticDeployedAddress(String networkId) {
        return _addresses.get(networkId);
    }

    public static String getPreviouslyDeployedAddress(String networkId) {
        return _addresses.get(networkId);
    }

    public static class ApprovalEventResponse extends BaseEventResponse {
        public String owner;

        public String spender;

        public BigInteger value;
    }

    public static class BuyGameEventEventResponse extends BaseEventResponse {
        public String bidder;

        public BigInteger amount;

        public BigInteger buy_time;

        public String event_msg;
    }

    public static class FrozenFundsEventResponse extends BaseEventResponse {
        public String target;

        public Boolean frozen;
    }

    public static class TransferEventResponse extends BaseEventResponse {
        public String from;

        public String to;

        public BigInteger value;
    }
}
